package com.tutu.service;

import com.tutu.entity.vo.BaseVo;
import com.tutu.entity.vo.weixin.WxUser;
import com.tutu.exception.ParamErrorException;

import javax.servlet.http.HttpServletRequest;
import java.util.List;
import java.util.Map;

/**
 * UserService
 */
public interface UserService {

    // 查询（分页）
    Map<String, Object> pageByParams(Integer companyId, String keyWord, Integer page, Integer limit);

    Map<String, Object> pageByChildParams(Integer companyId, Integer userId, Integer page, Integer limit);

    // 查询详情
    Map<String, Object> getInfoById(Integer id);

    // 添加 or 修改
    Map<String, Object> saveInfo(HttpServletRequest request, Integer id, String openId, String unionId, String nickName, String name, String mobile, String avatar, String description);

    // 删除
    Map<String, Object> deleteById(HttpServletRequest request, Integer id);

    // 批量删除
    Map<String, Object> batchDel(HttpServletRequest request, String ids);

    // 更新告警规则和用户的关联信息
    Map<String, Object> changeRelation(HttpServletRequest request, Integer alarmRuleId, Integer userId, Integer flag);

    // 根据公司ID查询该公司的所有用户信息
    List<BaseVo> findListByCompanyId(Integer companyId);

    // 获取所有用户基础信息
    List<BaseVo> findBaseList();

    // 根据公司ID查询对应的公司用户关联关系列表
    List<Integer> findUserListWithCompanyUser(Integer companyId);

    // 同步用户信息
    Map<String, Object> syncData(HttpServletRequest request);

    // 更新设备用户关联关系
    Map<String, Object> updateDeviceUser(HttpServletRequest request, String deviceCode, Integer userId, Integer type, Integer flag);

    // 用户信息完善
    Map<String, Object> completeInfo(HttpServletRequest request, String openId, String userName, String companyName, String userMobile) throws ParamErrorException;

    // 根据授权Code获取对应的微信用户信息
    WxUser getWxUserInfoByCode(String code);

    // 用户关注（取消关注）
    Map<String, Object> userSubscribe(String openId, Boolean isAdd);

    // 加载缓存数据
    void loadCacheData();
}
